#include "gtklistbox.h"
+#include "gtkaccessible.h"
#include "gtkactionhelperprivate.h"
#include "gtkadjustmentprivate.h"
#include "gtkbinlayout.h"
gtk_list_box_update_row_styles (box);
+ gtk_accessible_update_property (GTK_ACCESSIBLE (box),
+ GTK_ACCESSIBLE_PROPERTY_MULTI_SELECTABLE, mode == GTK_SELECTION_MULTIPLE,
+ -1);
+
g_object_notify_by_pspec (G_OBJECT (box), properties[PROP_SELECTION_MODE]);
if (dirty)
gtk_widget_unset_state_flags (GTK_WIDGET (row),
GTK_STATE_FLAG_SELECTED);
+ gtk_accessible_update_state (GTK_ACCESSIBLE (row),
+ GTK_ACCESSIBLE_STATE_SELECTED, selected,
+ -1);
+
return TRUE;
}
gtk_list_box_row_visibility_changed (box, row);
}
+static void
+gtk_list_box_row_root (GtkWidget *widget)
+{
+ GtkListBoxRow *row = GTK_LIST_BOX_ROW (widget);
+
+ GTK_WIDGET_CLASS (gtk_list_box_row_parent_class)->root (widget);
+
+ if (ROW_PRIV (row)->selectable)
+ gtk_accessible_update_state (GTK_ACCESSIBLE (row),
+ GTK_ACCESSIBLE_STATE_SELECTED, ROW_PRIV (row)->selected,
+ -1);
+}
+
/**
* gtk_list_box_row_changed:
* @row: a #GtkListBoxRow
{
if (!selectable)
gtk_list_box_row_set_selected (row, FALSE);
-
+
ROW_PRIV (row)->selectable = selectable;
+ if (selectable)
+ gtk_accessible_update_state (GTK_ACCESSIBLE (row),
+ GTK_ACCESSIBLE_STATE_SELECTED, FALSE,
+ -1);
+ else
+ gtk_accessible_reset_state (GTK_ACCESSIBLE (row),
+ GTK_ACCESSIBLE_STATE_SELECTED);
+
gtk_list_box_update_row_style (gtk_list_box_row_get_box (row), row);
+
g_object_notify_by_pspec (G_OBJECT (row), row_properties[ROW_PROP_SELECTABLE]);
}
}
object_class->finalize = gtk_list_box_row_finalize;
object_class->dispose = gtk_list_box_row_dispose;
+ widget_class->root = gtk_list_box_row_root;
widget_class->show = gtk_list_box_row_show;
widget_class->hide = gtk_list_box_row_hide;
widget_class->focus = gtk_list_box_row_focus;